package com.gnerv.battle.boot.module.base.service;

import com.gnerv.battle.boot.module.base.model.bo.PermissionBO;
import com.gnerv.battle.boot.module.base.model.dto.PermissionDTO;
import lombok.NonNull;

import java.util.List;
import java.util.Set;

/**
* @author Gnerv LiGen
*/
public interface PermissionService {

    boolean create(@NonNull PermissionBO permissionBO);

    boolean deleteByUkId(@NonNull String ukId);

    boolean updateByUkId(@NonNull PermissionBO permissionBO);

    PermissionDTO selectByUkId(@NonNull String ukId);

    String selectValueByUrlAndType(@NonNull String url, @NonNull String type);

    List<PermissionDTO> listByName(String name, Integer page, Integer size);

    List<PermissionDTO> listByRoleUkId(@NonNull String roleUkId);

    boolean isExist(@NonNull String url, @NonNull String type, String ukId);

    boolean bindRole(@NonNull String permissionUkId, @NonNull Set<String> roleUkIdList);

    boolean unbindRole(@NonNull String permissionUkId);

    int countByName(String name);
}
